import handleNum from "./index"


const reducer = (state = { ...handleNum.state }, action: { type: string, val: number }) => {
  const newState = JSON.parse(JSON.stringify(state))
  //调用dispatch执行这里的的代码
  // console.log("执行了reducer")
  console.log(action, 'cccccccccccc')
  // 思路： switch的做法是拿着action.type和case后面的每一个进行对比，这种做法很像遍历。 
  // 那我们就把case后面的这些值做成对象，actionNames
  // switch (action.type) {
  //   case handleNum.add1:
  //     handleNum.actions[handleNum.add1](newState)
  //     break
  //   case handleNum.add2:
  //     handleNum.actions[handleNum.add2](newState, action)
  //     break
  //   default:
  //     break
  // }
  // 【优化】上面这样写，我们没添加一个方法，都要在这里多写一句case

  // 拿着action.type和actionNames进行每一项的对比，如果是相等，就调用 模块名.actions[下标](newState,action)
  console.log(handleNum.actionNames, '///////////')
  for (let key in handleNum.actionNames) {
    // key是每一个键
    // 判断是不是相等
    // if(action.type==="add1")
    console.log(key, 'kkkkkkkkk')
    console.log(action.type, '--------------')
    console.log(handleNum.actionNames[key], '@@@@@@@@@@@@@')
    if (action.type === handleNum.actionNames[key]) {
      handleNum.actions[handleNum.actionNames[key]](newState, action)
      break;   // 结束本次循环
    }

  }

  return newState
}

export default reducer